package com.tangsm.spring.mvc.mybatis.config;

import com.tangsm.spring.mvc.mybatis.enums.DbTypeEnum;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
import org.springframework.stereotype.Component;


/**
 * 动态切换数据源类型自定义实现
 *
 * @author tangsm
 * @date 2021-08-02 10:20:20
 */
@Component
public class DynamicDataSource extends AbstractRoutingDataSource {

	/**
	 * 初始数据源
	 */
	@Value("${jdbc.db.type}")
	private String dbType;

	/**
	 * 取得当前使用那个数据源。
	 */
	@Override
	protected Object determineCurrentLookupKey() {
		final String dataSourceCode = DbTypeEnum.getCode(dbType);
		// 校验
		if(!"".equals(dataSourceCode)) {
			DbContextHolder.setDbType(dataSourceCode);
		}
		// 默认mysql数据源
		else {
			DbContextHolder.setDbType(DbTypeEnum.MYSQL.getCode());
		}
		return DbContextHolder.getDbType();
	}
}
